﻿using StockholmsStad.Data.Entity;

namespace StockholmsStad.Data.ContractFactory
{
    /// <summary>
    /// Hanterar de olika konverteringsfabrikerna
    /// </summary>
    internal abstract class FactoryAgent
    {
        /// <summary>
        /// Hämtar konverteringsfabriken för <see cref="Address"/> Address
        /// </summary>
        /// <returns>Aktuell fabrik</returns>
        public static AddressFactory GetAddressFactory()
        {
            return new AddressFactory();
        }

        /// <summary>
        /// Hämtar konverteringsfabriken för <see cref="CeremonyFactory"/> CeremonyFactory
        /// </summary>
        /// <returns>Aktuell fabrik</returns>
        public static CeremonyFactory GetCeremonyFactory()
        {
            return new CeremonyFactory();
        }

        /// <summary>
        /// Hämtar konverteringsfabriken för <see cref="CoupleFactory"/> CoupleFactory
        /// </summary>
        /// <returns></returns>
        public static CoupleFactory GetCoupleFactory()
        {
            return new CoupleFactory();
        }

        /// <summary>
        /// Hämtar konverteringsfabriken för <see cref="PersonFactory"/> PersonFactory
        /// </summary>
        /// <returns></returns>
        public static PersonFactory GetPersonFactory()
        {
            return new PersonFactory();
        }

        /// <summary>
        /// Hämtar konverteringsfabriken för <see cref="TicketFactory"/> TicketFactory
        /// </summary>
        /// <returns></returns>
        public static TicketFactory GetTicketFactory()
        {
            return new TicketFactory();
        }

        /// <summary>
        /// Hämtar konverteringsfabriken för <see cref="UserFactory"/> UserFactory
        /// </summary>
        /// <returns></returns>
        public static UserFactory GetUserFactory()
        {
            return new UserFactory();
        }

        public static BookingFactory GetBookingFactory()
        {
            return new BookingFactory();
        }

        public static PropertiesFactory GetPropertiesFactory()
        {
            return new PropertiesFactory();
        }

        public static MinisterFactory GetMinisterFactory()
        {
            return new MinisterFactory();
        }
    }
}